package com.yunsom.testdemo.multiple_thread.producer_customer.multiple_thread;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;

/**
 *  * 生产者:生产数据一方，数据生产后放入仓库
 *  * 消费者:处理数据一方，从仓库获取数据
 *  * 仓库： 存储数据，协调生产与消费
 *  *
 *  * 生产者-消费者模式优势：
 *  * 解耦生产者消费者
 *  * 支持并发，生产者消费者不再互相依赖，可彼此独立并发
 *  * 支持忙闲不均，双方处理数据的速度可以不同，通过仓库来缓冲数据
 *  *
 *  * 并发容器版本
 */
public class MultipleThreadTest {
    public static void main(String[] args) {
        //blockingqueue扮演仓库角色，ArrayBlockingQueue是定长的，可以模拟出队列已满的情况
        BlockingQueue<Integer> buffer = new ArrayBlockingQueue<Integer>(20);
        new Producer(buffer).start();
        new Consumer(buffer).start();
    }

}
